package web

import (
	"ssh_status/internal/v2/log"
	"ssh_status/internal/v2/stats"

	"github.com/gin-gonic/gin"
)

// Server 实现了Web服务器
type Server struct {
	router *gin.Engine
	Stats  stats.ScanStats
}

// NewServer 创建新的Web服务器实例
func NewServer() *Server {
	router := gin.Default()
	s := &Server{
		router: router,
	}

	// 设置路由
	s.setupRoutes()

	return s
}

// setupRoutes 设置所有路由
func (s *Server) setupRoutes() {
	// API路由组
	apiV2 := s.router.Group("/api/v2")
	{
		apiV2.GET("/health", s.healthCheck)
		apiV2.POST("/detect", s.detectSSHConnection)
		apiV2.GET("/detect", s.detectSSHConnection)
		apiV2.GET("/stats", s.getStats)
	}

	// 设置首页和静态文件路由
	s.setupIndexRoutes(s.router)
}

// Start 启动Web服务器
func (s *Server) Start(addr string) error {
	log.Info("Web服务器正在启动，监听地址: %s", addr)
	if err := s.router.Run(addr); err != nil {
		log.Error("Web服务器启动失败: %v", err)
		return err
	}
	return nil
}
